{{ tenantCount }} managed client orgs · isolated Grafana + Wazuh
Onboard New Client
← All tenants
{{ tv.healthLabel }}
Open org in Grafana ↗
{{ tv.name }}
Grafana org {{ tv.org }} · {{ tv.siteCount }} sites monitored
{{ tv.isoNote }}
Sites
← {{ sd.tenantName }}
{{ sd.statusLabel }}
{{ sd.domain }}
{{ sd.tenantName }} · org {{ sd.org }}
{{ s.label }}
{{ s.value }}
{{ s.sub }}
Scope
Open in Explore ↗
IOC lookup
{{ iocResult.verdict }}{{ iocResult.q }}
{{ iocResult.detail }}
Queries the MISP attributes API — known-bad? which event · seen on which of our assets · suggested action.
Attacker activity · supporting context
Legend
blocked
challenged
allowed / observed
Origin by Country
{{ c.country }}{{ c.count }}
Top MITRE Techniques
{{ t.tactic }}
Detection queue · Wazuh alerts
Open in Explore ↗ (deep-dive in SIEM)
CVE exposure · wazuh-states-vulnerabilitiesCVE dashboard ↗
Posture by tenant · Wazuh SCA + framework rule tags
Per-tenant SLA · MTTA / MTTR vs contractual target
Client-facing PDF reports · white-labeled under 365SMG · availability gated by service plan. Open a report to preview, then print to PDF.
Period
June 2026
Client
▼
{{ reportSel.plan }}
{{ reportSel.availLabel }}
{{ rep.title }}
{{ rep.badge }}
{{ rep.cadence }}
Live data seam: reports currently render representative figures. The orchestrator will populate them from Wazuh (detections/agents), Loki + Grafana (WAF/uptime), IRIS (cases), and the vuln feed — see docs/CLIENT_REPORTS.md.
DFIR-IRIS · alerts pushed from the SOC portal → escalate to cases
{{ respGateTitle }}
{{ respGateSub }}
Filter
AUTO → PROPOSE = would auto-contain when armed (near-certain + reversible) · PROPOSE = always needs a human (higher FP) · ♻ Reversible = analyst approve is the 2nd eye · ⚠ Irreversible = needs a named 2nd approver
{{ p.actionIcon }} {{ p.actionLabel }}
{{ p.confLabel }}
{{ p.revLabel }}
{{ p.id }} · {{ p.ago }} ago
{{ p.rule }}
{{ p.tenantName }} · agent {{ p.agent }} ({{ p.host }}){{ p.targetLine }}
{{ p.reason }}
View alert / case ↗
{{ p.resultText }}
{{ p.gateNote }}
No pending proposals — you're clear. ✓
Currently contained — reverse when triage clears. Each reverse runs through respond() and is audited.
{{ c.kindLabel }}{{ c.host }}
{{ c.tenantName }} · {{ c.detail }}
No active containments. Isolated hosts and quarantined files appear here for one-click reversal.
{{ h.label }}
{{ h.value }}
{{ h.sub }}
Per-client telemetry · worst first
Grafana dashboards · {{ launcherCount }}
deep-link · no token · Cloudflare Access authenticates you
Live thumbnails need a server-rendered PNG (Grafana image-renderer + Viewer service-account token, proxied by the backend). Preview shows mock charts; deep-links always work.
{{ d.name }}
{{ d.healthLabel }}
{{ d.detail }}
{{ d.iso }}
{{ f.folder }}
Plan catalog · entitlements
Tenant subscriptions · usage vs. plan · synced from Zoho
Open Zoho Billing ↗
Zoho is the billing system of record & customer-facing surface (hosted invoices + client portal). This screen is internal control/visibility only — no card data is handled here. Enforcement: UI upsell → orchestrator gate → provisioning limits → auto-suspend on non-payment. See docs/BILLING_ENTITLEMENTS.md.